#include <pthread.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>


void * thread_callback(void * argv)
{
    printf("我是子线程，参数为 = %s\n",(char *)argv);
    //创建一个内存空间 因为要返回一个指针 避免因为线程结束 站里面的字符串消失变成野指针
    char *buff = (char *)malloc(9);
    //把Thread 2 拷贝到开辟的内存空间 并且返回 
    strcpy(buff,"Thread 2");
    return (void *)buff;
}


int main(int argc, char const *argv[])
{
    // 创建一个线程
    //int pthread_create(pthread_t * thread,           存储新线程的线程标识符
    //                   const pthread_attr_t *attr,   来设置线程的内存大小优先级等  NULL 表示默认
    //                   void *(*start_routine)(void *), 新线程的函数指针
    //                   void *arg);                     新线程函数的参数
    //return                                             返回0 表示成功 返回非0  表示创建失败
    pthread_t thread;  //存储新线程的线程标识符
    //创建线程
    pthread_create(&thread,NULL,thread_callback,"Thread 1");
    printf("我是主线程...\n");

    //和进程一样 主线程有回收 子线程的 责任
    void *a;
    //等待线程结束回收  
    pthread_join(thread,&a);
    printf("子线程的返回值：%s\n",(char *)a);
    //释放a指向的内存 a指向的内存是我们自己创建的内存
    free(a);
    return 0;
}